#pragma once

#include "Graph.h"


//图算法
//将图的表示和算法实现相分离
class GraphAlgorithm {
public:
    static vector<int> BFS(Graph *graph, int v);
    static vector<int> DFS(Graph *graph, int v);
	//static vector<vector<int>> Path(int v1, int v2);  //顶点v1到v2的所有路径
	static void MST_Prim(Graph *graph);			//最小生成树Prim算法
	static void MST_Ksuskal(Graph *graph);		//最小生成树Ksuskal算法
	static void SP_BellmanFord(Graph *graph);	//最短路径BellmanFord算法
	static void SP_Dijkstra(Graph *graph);		//最短路径Dijkstra算法
private:
	static void relax(Graph *, int, vector<int>&, vector<int>&);
};
